home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1833 / 1833.xpi / chrome / yoono.jar / content / yoono / bookmarks / bookmarksutils.js < prev    next >
Text File  |  2009-12-16  |  7KB  |  234 lines

  1. /*
  2.  * bookmarksutils.js
  3.  *
  4.  * @author    david marteau <marteau.david@free.fr>
  5.  * @copyright 2005-2006 Yoono
  6.  */
  7.  
  8.  const YOONO_NS = "http://www.yoono.com/bookmarks/1.0";
  9.  
  10.  function ynBookmarksUtils() 
  11.  {
  12.    const CI = Components.interfaces;
  13.    const CL = Components.classes;
  14.  
  15.    const RDF_NS  = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
  16.    const NC_NS   = "http://home.netscape.com/NC-rdf#";
  17.  
  18.    this._NC_NS   = NC_NS;
  19.  
  20.    this._console = CL['@mozilla.org/consoleservice;1'].getService(CI.nsIConsoleService);
  21.    this._rdf     = CL['@mozilla.org/rdf/rdf-service;1'].getService(CI.nsIRDFService); 
  22.    this._rdfc    = CL['@mozilla.org/rdf/container-utils;1'].getService(CI.nsIRDFContainerUtils);
  23.  
  24.    this._prefs = CL['@mozilla.org/preferences-service;1'].getService(CI.nsIPrefService);
  25.    this._prefs.QueryInterface(CI.nsIPrefBranch);
  26.  
  27.    this._bmds = this._rdf.GetDataSource("rdf:bookmarks");
  28.    this._ds   = this._bmds.QueryInterface(CI.nsIBookmarksService);
  29.  
  30.    this._typeRes=this._rdf.GetResource(RDF_NS+"type");
  31.  
  32.    // RDF types
  33.    this._bookmarkType  =this._rdf.GetResource(NC_NS+"Bookmark");
  34.    this._folderType    =this._rdf.GetResource(NC_NS+"Folder");
  35.    this._livemarkType  =this._rdf.GetResource(NC_NS+"Livemark");
  36.    this._separatorType =this._rdf.GetResource(NC_NS+"BookmarkSeparator");
  37.  
  38.    // RDF bookmarks arcs
  39.    /*
  40.    this._urlRes     = this._rdf.GetResource(NC_NS+"URL");
  41.    this._nameRes    = this._rdf.GetResource(NC_NS+"Name");
  42.    this._descRes    = this._rdf.GetResource(NC_NS+"Description");
  43.    this._keywordRes = this._rdf.GetResource(NC_NS+"ShortcutURL");
  44.    this._iconRes    = this._rdf.GetResource(NC_NS+"Icon");
  45.    this._feedRes    = this._rdf.GetResource(NC_NS+"FeedURL");
  46.    this._sideRes    = this._rdf.GetResource(NC_NS+"WebPanel");
  47.    this._dateRes    = this._rdf.GetResource(NC_NS+"BookmarkAddDate");
  48.    */
  49.  }
  50.  
  51.  ynBookmarksUtils.prototype =
  52.  {
  53.    // RDF helper
  54.    /**
  55.     * return string value from rdf Literal or resource
  56.     */
  57.     rdfStringData : function( aLiteralOrResource )
  58.     {
  59.       const CI = Components.interfaces;
  60.     
  61.       try {
  62.         var obj = aLiteralOrResource.QueryInterface(CI.nsIRDFLiteral);
  63.         return obj.Value;
  64.       }
  65.       catch (e) 
  66.       {
  67.         try {
  68.           obj = aLiteralOrResource.QueryInterface(CI.nsIRDFResource);
  69.           return obj.Value;
  70.          }
  71.          catch (e) {}
  72.       }
  73.       return "";
  74.     },
  75.  
  76.     get RDF()  { return this._rdf;  },
  77.     get RDFC() { return this._rdfc; },
  78.     get BKMS() { return this._ds;   },
  79.     get BMDS() { return this._bmds; },
  80.      
  81.     getArc : function( name ) {
  82.       return this._rdf.GetResource(this._NC_NS+name);
  83.     },
  84.  
  85.     getProperty : function( aRes, aArc ) {
  86.       return this.rdfStringData(
  87.              this._bmds.GetTarget(aRes,aArc,true));
  88.     },
  89.  
  90.     getDateLiteral : function( aRes, aArc ) {
  91.       var obj = this._ds.GetTarget(aRes,aArc,true);
  92.       return obj.QueryInterface(Components.interfaces.nsIRDFDate).Value;      
  93.     },
  94.  
  95.     getPropertyByName : function( aRes, aName ) {
  96.       return this.rdfStringData(
  97.              this._bmds.GetTarget(aRes,
  98.              this.getArc(aName),true));
  99.     },
  100.     
  101.     getType : function( aResource )
  102.     {
  103.       var type = this.rdfStringData(this._ds.GetTarget(aResource,this._typeRes,true));
  104.       if (type != "")
  105.           type = type.split("#")[1];
  106.       
  107.       if(type=="Folder" &&  aResource == this._ds.getBookmarksToolbarFolder())
  108.          type = "ToolbarFolder";
  109.         
  110.       return type;
  111.     }, 
  112.     
  113.     getContainer : function( aResource )
  114.     {
  115.       var container = Components.classes["@mozilla.org/rdf/container;1"]
  116.               .createInstance(Components.interfaces.nsIRDFContainer);     
  117.   
  118.       container.Init(this._ds,aResource);
  119.       return  container;
  120.     },
  121.  
  122.     getRoot : function() { 
  123.       return this._rdf.GetResource("NC:BookmarksRoot");
  124.     },
  125.  
  126.     getToolBarFolder : function() {
  127.       return this._ds.getBookmarksToolbarFolder();
  128.     },
  129.  
  130.     getBookmarkedResource : function( aArc, aValue ) 
  131.     {
  132.       var literal = this._rdf.GetLiteral(aValue);
  133.       var res     = this._bmds.GetSource(aArc,literal,true);
  134.  
  135.       if(res && this._ds.isBookmarkedResource(res))
  136.          return res;
  137.          
  138.       return null;
  139.     },       
  140.  
  141.     isBookmarked : function( aArc, aValue ) {
  142.       return this.getBookmarkedResource(aArc,aValue) != null;
  143.     },
  144.  
  145.     createFolder : function( folderName, folderDesc, parentRes )
  146.     {
  147.       var res = (parentRes ?
  148.         this._ds.createFolderInContainer(folderName,parentRes,0):
  149.         this._ds.createFolder(folderName));
  150.          
  151.       if(res && folderDesc) 
  152.       {
  153.          const descRes = this.getArc("Description");
  154.          this._bmds.Assert(res,descRes,
  155.                              this._rdf.GetLiteral(folderDesc), 
  156.                              true);                           
  157.       }
  158.  
  159.       return res;
  160.     },
  161.  
  162.     createBookmark : function( bmName, bmURL,bmshortcutURL,bmDescription,
  163.                                parentRes )
  164.     {
  165.       var res = (parentRes ?
  166.         this._ds.createBookmarkInContainer(bmName,bmURL,bmshortcutURL,bmDescription,'',null,parentRes,null):
  167.         this._ds.createBookmark(bmName,bmURL,bmshortcutURL,bmDescription,'', null));
  168.               
  169.       return res;
  170.     },
  171.  
  172.     createLivemark : function( lvName, lvURL,lvRSSURL,lvDescription,
  173.                                parentRes )
  174.     {
  175.       var res = (parentRes ?
  176.         this._ds.createLivemarkInContainer(lvName,lvURL,lvRSSURL,lvDescription,parentRes,null):
  177.         this._ds.createLivemark(lvName,lvURL,lvRSSURL,lvDescription));
  178.               
  179.       return res;
  180.     },
  181.  
  182.     createSeparator : function() 
  183.     {
  184.       return this._ds.createSeparator();
  185.     },
  186.  
  187.     isOrdinalProperty : function ( aResource ) {
  188.        return this._rdfc.IsOrdinalProperty(aResource);
  189.     },
  190.  
  191.     get prefs() { return this._prefs; },
  192.     
  193.     getPref : function( prefName, defaultValue ) 
  194.     { 
  195.       try {
  196.         var prefs = this._prefs;
  197.         switch(prefs.getPrefType(prefName))
  198.         {
  199.           case prefs.PREF_STRING : return prefs.getCharPref(prefName);
  200.           case prefs.PREF_BOOL   : return prefs.getBoolPref(prefName);
  201.           case prefs.PREF_INT    : return prefs.getIntPref (prefName);
  202.         }
  203.       } catch(e) {}  
  204.       
  205.       return defaultValue;
  206.     },
  207.  
  208.     beginUpdateBatch : function() { this._bmds.beginUpdateBatch(); },
  209.     endUpdateBatch   : function() { 
  210.        this._bmds.endUpdateBatch();
  211.        try {
  212.          //this._ds.transactionManager.clear();
  213.        } catch(err) {}
  214.     },  
  215.  
  216.     flush : function()
  217.     {
  218.       var remote = this._bmds.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
  219.       setTimeout(function () {remote.Flush();}, 100);
  220.     },
  221.  
  222.     error : function( topic, message )
  223.     {
  224.       var msg = topic+"\n"+message;
  225.       this._console.logStringMessage(msg);
  226.       dump(msg+'\n');
  227.     }
  228.  
  229.  
  230.  };
  231.  
  232.  
  233.  
  234.